package com.applet.system.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.applet.system.entity.User;
import com.applet.system.entity.dto.UserDto;

@Mapper
public interface UserMapper {

	/**
	 * 根据用户名/密码查询未逻辑删除的用户信息
	 * @param user
	 * @return
	 */
	User getUserByPassword(User user);
	
	/**
	 * 修改个人信息
	 * @param user
	 * @return
	 */
	int updateSelfInformation(User user);
	
	/**
	 * 修改个人密码
	 * @param user
	 * @return
	 */
	int updateSelfPassword(UserDto user);
	
	/**
	 * 角色是否被使用
	 * @param roleId
	 * @return
	 */
	boolean getRoleIsUsed(Long roleId);
	
	/**
	 * 根据角色id获取所有相关的用户id集合
	 * @param roleId
	 * @return
	 */
	List<Long> getUserIdsByRoleId(Long roleId);
	
	/**
	 * 获取用户名
	 * @param userId
	 * @return
	 */
	String getUserName(Long id);

	/**
	 * 分页查询
	 * @param user
	 * @return
	 */
	List<UserDto> getPage(UserDto user);
	
	/**
	 * 修改用户状态
	 * @return
	 */
	int updateUserStatus(User user);
	
	/**
	 * 修改用户密码
	 * @param user
	 */
	int updatePwd(User user);
	
	/**
	 * 插入用户
	 * @param user
	 * @return
	 */
	int insert(User user);
	
	/**
	 * 判断用户名是否被使用
	 * @param userName
	 * @return
	 */
	boolean getUserNameIsUsed(String userName);
	
	/**
	 * 配置用户角色
	 * @param user
	 */
	void insertUserRoles(UserDto user);
	
	/**
	 * 删除用户角色
	 * @param userId
	 */
	void deleteUserRoles(Long userId);
	
	/**
	 * 获取用户角色id集合
	 * @param userId
	 * @return
	 */
	List<Long> getUserRoleIds(Long userId);
}
